package app.controller;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Vector;

import app.model.Database;
import app.model.ticket_reserve.Evento;
import app.model.ticket_reserve.EventosDaoImpl;
import app.model.ticket_reserve.Lugar;
import app.view.ViewReservaBilhetes;

public class ReservaBilhetes_pessimista extends ReservaBilhetes_otimista{

	public ReservaBilhetes_pessimista(String title) {
		super(title);
	}

	@Override
	public Vector<Lugar> getListaLugaresDisponiveis(int tipo_do_Evento) {
		
		try{
			try {
				this.userImpl.keepKey(true);
			} catch (SQLException e) {
				System.err.println("Nao foi possivel por o auto commit a falso.");
			}
			return this.userImpl.getListaLugaresDisponiveis(tipo_do_Evento, ResultSet.CONCUR_UPDATABLE);
		}finally{
			this.StartTableLockTimer();
		}
	}

	@Override
	public void LibertarLugarAnteriormenteSelecionado() {
		if(this.evento_selecionado != null && this.lugar_selecionado != null){
			
			this.userImpl.libertaLugarQueFoiSelecionadoAnteriormente(evento_selecionado, lugar_selecionado);
			
			this.evento_selecionado = null;
			this.lugar_selecionado = null;
		}
	}

	@Override
	public boolean lugarEstaSelecionado(Evento evento, Lugar lugar){
		boolean result = false;
		
		this.evento_selecionado = evento;
		this.lugar_selecionado = lugar;
		this.timer.interrupt();
		result = this.userImpl.lugarSelecionado(evento, lugar);
		
		return result;
		
	}
	
}
